import { defineConfig, loadEnv } from "vite"
import vue from "@vitejs/plugin-vue";
import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
import path from "path";
import { resolve } from "path";
import { createSvgIconsPlugin } from "vite-plugin-svg-icons";

const pathSrc = path.resolve(__dirname, "src");
// https://vite.dev/config/
export default defineConfig(({ mode }) => {
  const config = loadEnv(mode, "./");
  return {
    resolve: {
      alias: {
        "@": pathSrc,
      },
    },
    css: {
      // 配置预处理选择器
      preprocessorOptions: {
        // 定义全局 less 变量
        less: {
          javascriptEnabled: true, // Less 文件中使用 JavaScript 表达式
          // reference，保证编译后的 CSS 文件将只包含实际使用的样式
          // Less 文件编译之前插入一些全局变量或混入（混入仅main.ts导入不能识别），全局文件
          additionalData: `
        @import (reference) "@/styles/global.less";
        @import (reference) "@/styles/variable.less";
        `,
          // less用@import，scss用@use引入模块名
          // additionalData: `
          //   @use "@/styles/variables.scss" as *;
          // `,
        },
      },
    },
    plugins: [
      vue(),
      AutoImport({
        // 自动导入"vue", "vue-router", "pinia"相关函数，如：ref, reactive, toRef 等
        imports: ["vue", "vue-router", "pinia"],
        // eslintrc: {
        //   enabled: true, // 是否自动生成 eslint 规则，建议生成之后设置 false
        //   filepath: "./.eslintrc-auto-import.json", // 指定自动导入函数 eslint 规则的文件
        // },
      }),
      Components({
        // 指定自定义组件位置(默认:src/components)
        dirs: ["src/components", "src/**/components"],
        // 导入组件类型声明文件路径 (false:关闭自动生成)
        dts: false,
      }),
      createSvgIconsPlugin({
        // 注册图标
        iconDirs: [resolve(pathSrc, "assets/svgIcons")], //svg图标位置
        symbolId: "icon-[dir]-[name]",
      }),
    ],
    server: {
      host: "0.0.0.0", //服务器监听网络接口上的所有请求，任意ip地址都能访问
      open: true, //自动打开浏览器
      // 允许跨域
      cors: true,
      // 自定义代理规则
      proxy: {
        [config.VITE_BASE_URL]: {
          target: config.VITE_TARGET,
          changeOrigin: true,
          rewrite: (p) => p.replace([config.VITE_BASE_URL], ""),
        },
        // "/chn-energy-office/": {
        //   target: config.VITE_PREVIEW_BASEURL + "/chn-energy-office/",
        //   changeOrigin: true,
        //   rewrite: (p) => p.replace(/^\/chn-energy-office/, ""),
        // },
      },
    },
  };
});
